def convert_en_punctuation_to_zh(text):
    # 英文标点 → 中文标点 映射表
    punctuation_map = {
        '"': '“”',   # 双引号（需要分前后）
        "'": "‘’",   # 单引号（需要分前后）
        ':': '：',    # 冒号
        ';': '；',    # 分号
        '!': '！',    # 感叹号
        '?': '？',    # 问号
        ',': '，',    # 逗号
        '.': '。',    # 句号（注意句末连续多个 . 应保留原意）
        '(': '（',    # 左括号
        ')': '）',    # 右括号
        '[': '【',    # 左方括号
        ']': '】',    # 右方括号
        '{': '｛',    # 左花括号
        '}': '｝',    # 右花括号
        '<': '《',    # 小于号（书籍引用常用）
        '>': '》',    # 大于号
        '-': '—',     # 短横线 → 破折号（视上下文也可保留）
        '...': '……'   # 省略号
    }

    result = []
    i = 0
    while i < len(text):
        matched = False
        # 检查是否匹配多字符标点（如 ...）
        for punc in sorted(punctuation_map.keys(), key=lambda x: -len(x)):
            if text.startswith(punc, i):
                replacement = punctuation_map[punc]
                if punc == '"':
                    # 区分前引号和后引号
                    if result and result[-1] in ['“', '‘']:
                        replacement = '”'
                    else:
                        replacement = '“'
                elif punc == "'":
                    if result and result[-1] == '‘':
                        replacement = '’'
                    else:
                        replacement = '‘'
                result.append(replacement)
                i += len(punc)
                matched = True
                break
        if not matched:
            result.append(text[i])
            i += 1

    return ''.join(result)



